package edu.nf.ch09;

/**
 * @author wangl
 * @date 2025/4/17
 */
public abstract class Teacher {

    public void call() {
        System.out.println("上课点名");
    }

    /**
     * 抽象的上课方法，由子类实现
     */
    public abstract void lessons();

    /**
     * 抽象作业布置方法，由子类实现
     */
    public abstract void homework();

    /**
     * 钩子方法，子类重写该方法实现剔除想要执行的步骤
     * @return
     */
    public boolean hock() {
        return true;
    }

    /**
     * 模版方法，统一执行的顺序
     */
    public void work() {
        call();
        lessons();
        if(hock()) {
            homework();
        }
    }
}